package com.example.gulimall.common.enums;

import lombok.Getter;

/**
 * <p>DESC: </p>
 * <p>DATE: 2019/2/13</p>
 * <p>VERSION:1.0.0</p>
 * <p>@AUTHOR: JGD</p>
 */
@Getter
public enum ServiceCodeEnum {

    /* -------------------------------------*/
    /*                                      */
    /*        0:成功    1:失败              */
    /*                                      */
    /* -------------------------------------*/

    /**
     * 成功
     */
    SUCCESS(0, "成功"),

    /**
     * 失败
     */
    FAIL(1, "失败"),

    /* -------------------------------------*/
    /*                                      */
    /*        400-550 服务器相关错误        */
    /*                                      */
    /* -------------------------------------*/
    /**
     * 无效请求
     */
    BAD_REQUEST(400, "无效请求"),

    /**
     * 参数错误
     */
    PARAM_ERROR(400, "参数错误，缺少必要参数"),

    /**
     * 无效鉴权信息
     */
    UNAUTHORIZED(401, "无效授权信息"),

    /**
     * 无权访问此资源
     */
    FORBIDDEN(403, "无权访问此资源"),

    /**
     * 无效的访问地址
     */
    INVALID_URL(404, "无效的访问地址"),

    /**
     * 不支持的请求方式
     */
    NOT_SUPPORTED(405, "不支持的请求方式"),
    /**
     * 未配置UserDetailsService接口的实现类
     */
    NO_USER_DETAIL_SERVICE(406, "未配置UserDetailsService接口的实现类"),

    /**
     * 网络异常
     */
    REQUEST_TIMEOUT(408, "请求超时"),

    /**
     * 数据完整性异常 数据过长  过短
     */
    LENGTH_REQUIRED(411, "数据完整性异常"),
    /**
     * 数据格式错误
     */
    DATA_FORMAT_ERROR(415, "数据格式错误"),

    /**
     * 账户已锁定
     */
    LOCKED(423, "账户已锁定，请联系客服"),

    /**
     * 请求过于频繁
     */
    TOO_MANY_REQUESTS(429, "请求过于频繁"),

    /**
     * 服务器内部错误
     */
    SERVER_INTERNAL_ERROR(500, "服务器内部错误"),


    /**
     * 暂不可服务
     */
    SERVICE_UNAVAILABLE(503, "暂不可服务"),
    /**
     * 需要认证
     */
    AUTHENTICATION_REQUIRED(511, "需要认证"),

    /**
     * 无数据
     */
    NO_DATA(512, "无数据"),
    /**
     * 存在关联数据
     */
    DATA_RELATION(513, "存在关联数据"),
    /**
     * 该数据已填写
     */
    DATA_COMPLETED(514, "该数据已填写"),
    /* -------------------------------------*/
    /*                                      */
    /*        600-619 登录相关业务码         */
    /*                                      */
    /* -------------------------------------*/

    /**
     * 账号不存在
     */
    ACCOUNT_NON_EXISTENT(601, "账号不存在"),

    /**
     * 账号已存在
     */
    ACCOUNT_EXISTENT(602, "账号已存在"),

    /**
     * 账户密码错误
     */
    ACCOUNT_PASSWORD_ERROR(603, "用户名或密码不正确"),

    /**
     * 手机号已绑定
     */
    TEL_IS_BIND(604, "手机号已绑定"),

    /**
     * 未绑定手机号
     */
    TEL_IS_NOT_BIND(605, "尚未绑定手机号,请先绑定手机号"),

    /**
     * token已过期
     */
    TOKEN_EXPIRED(608, "token已过期"),

    /**
     * 账户在其他地方登录
     */
    ACCOUNTS_IS_LOGGED_IN_ELSEWHERE(609, "账户可能在其他地方登录"),

    /**
     * 第三方登录失败
     */
    THIRD_LOGIN_ERROR(610, "第三方登录失败"),

    /**
     * 不支持的登录方式
     */
    NOT_SUPPORT_LOGIN_CHANNEL(611, "暂不支持的登录方式"),

    /**
     * 需要登录后操作
     */
    NEED_LOGIN(612, "需要登录后操作"),

    /**
     * 尚未设置密码
     */
    LOGIN_PASSWORD_HAS_NOT_BEEN_SET(613, "尚未设置密码"),

    /**
     * 注册失败
     */
    REGISTER_FAIL(614, "注册失败"),

    /**
     * 连续登录错误达到阈值，请稍后再试
     */
    CONTINUOUS_LOGIN_ERROR(615, "密码连续登录错误达到阈值，请稍后再试，或使用短信验证码登录"),

    /**
     * refreshToken已过期
     */
    REFRESH_TOKEN_EXPIRE(618, "refreshToken已过期"),


    /* -------------------------------------*/
    /*                                      */
    /*        620-639 验证码相关业务码      */
    /*                                      */
    /* -------------------------------------*/

    /**
     * 验证码获取失败
     */
    VERIFY_CODE_FAIL(621, "验证码获取失败"),

    /**
     * 无效验证码
     */
    INVALID_VERIFY_CODE(622, "无效验证码"),

    /**
     * 验证码已使用
     */
    USED_VERIFY_CODE(623, "验证码已使用"),

    /**
     * 验证码已过期
     */
    EXPIRE_VERIFY_CODE(624, "验证码已过期"),



    /* -------------------------------------*/
    /*                                      */
    /*        640-659 角色相关业务码        */
    /*                                      */
    /* -------------------------------------*/

    /**
     * 角色已存在
     */
    ROLE_EXIST(640, "角色已存在"),

    /**
     * 角色不存在
     */
    ROLE_NOT_EXIST(641, "角色不存在"),


    /* -------------------------------------*/
    /*                                      */
    /*        660-679 文件相关业务码        */
    /*                                      */
    /* -------------------------------------*/

    /**
     * 文件过大
     */
    FILE_TOO_LARGE(660, "文件过大"),

    /**
     * 不支持的文件类型
     */
    UNSUPPORTED_FILE_TYPE(661, "不支持的文件类型"),

    /**
     * 文件不存在
     */
    FILE_NOT_EXIST(662, "文件不存在"),


    /* -------------------------------------*/
    /*                                      */
    /*        680-699 商铺相关业务码        */
    /*                                      */
    /* -------------------------------------*/

    /**
     * 该商铺已经认证
     */
    SHOP_IS_CERTIFICATION(680, "该商铺已经认证"),

    /**
     * 该商铺类型没有认证记录
     */
    SHOP_TYPE_NOT_CERTIFICATION(681, "该商铺类型没有认证记录"),

    /**
     * 该商铺ID不能为空
     */
    SHOP_ID_NOT_NULL(682, "该商铺ID不能为空"),

    /**
     * 该商铺类型不能为空
     */
    SHOP_TYPE_NULL_CERTIFICATION(683, "该商铺类型不能为空"),

    /**
     * 该用户已经在商铺中
     */
    SHOP_USER_EXIST(684, "该用户已经在商铺中"),

    /**
     * 该店铺名称已经存在
     */
    SHOP_SHOP_NAME_EXIST(685, "该名称已经存在"),

    /**
     * 该商铺已经存在草稿信息
     */
    SHOP_IS_DRAFT(686, "该商铺已经存在草稿信息"),

    /* -------------------------------------*/
    /*                                      */
    /*        700+ 其他业务码               */
    /*                                      */
    /* -------------------------------------*/

    /**
     * 你已经申请,请耐心等待
     */
    SHOP_APPLY_EXIST(700, "你已经申请,请耐心等待"),

    /**
     * 添加人数超过限制
     */
    SHOP_MAX_TEL(701, "添加人数超过限制"),

    /**
     * 开启重复的代办流程
     */
    TASK_IS_OPEN(702, "开启重复的代办流程"),

    /**
     * 同一活动只能拼团一次
     */
    ASSEMBLE_ACTIVITY_HAVE_JOIN(703, "同一活动只能拼团一次"),


    /**
     * 开始时间不能大于结束时间
     */
    TIME_FAIL(704, "%s开始时间需小于结束时间"),

    /**
     * 二维码获取失败
     */
    QR_CODE_GET_FAIL(705, "二维码获取失败"),

    /**
     * 有尚未完成的任务
     */
    TASK_IS_NOT_OVER(706, "有尚未完成的任务"),

    /**
     * 该记录已经审核
     */
    REMARK_IS_EXAMINE(707, "该记录已经审核"),

    /**
     * 只有管理员才能操作
     */
    SHOP_ONLY_MANAGER_HANDLE(708, "只有管理员才能操作"),

    /**
     * 群主不能被删除
     */
    EMCHAT_GROUP_DELETE_ERROR(709, "群主不能被删除"),

    /**
     * 存在重复数据
     */
    EMCHAT_REPEAT_ERROR(710, "存在重复数据");


    ServiceCodeEnum(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    private Integer code;

    private String message;
}
